package com.mintingi.pattern.adapter;

/**
 * 어댑터 클라이언트 테스트
 * 
 * @author mintingi
 *
 */
public class ClientTest {

	public static void main(String[] args) {
		
		System.out.println("# 생성시 의존성 주입 #");
		// Client 객체 생성시 의존성 주입(Dependency Injection, DI)
		// 생성시 익명 클래스로 Target 인터페이스를 구현한 클래스 주입
		Client client = new Client(new Target() {
			// 익명 클래스로 구현, Target 인터페이스 맞게 구현
			@Override
			public void request() {
				System.out.println("Target를 구현한 request 메소드가 호출 되었습니다.");
			}
		});
		// 작업 실행 메소드 호출
		client.doWork();
		
		System.out.println("----------------------");
		
		System.out.println("# 실행시 의존성 주입 #");
		// Client 객체 실행시 의존성 주입(Dependency Injection, DI)
		// 어댑터를 통해서 다른 인터페이스와 호환성을 맞춘다.
		client.setTarget(new Adapter(new Adaptee()));
		// 작업 실행 메소드 호출
		client.doWork();
	}
}
